import lodash from 'lodash'
import { Config } from './components/index.js'

// 支持锅巴
export function supportGuoba() {
    let groupList = Array.from(Bot.gl.values())
    groupList = groupList.map(item => item = { label: `${item.group_name}-${item.group_id}`, value: item.group_id })
    return {
        // 插件信息，将会显示在前端页面
        // 如果你的插件没有在插件库里，那么需要填上补充信息
        // 如果存在的话，那么填不填就无所谓了，填了就以你的信息为准
        pluginInfo: {
            name: 'impart-pro-plugin',
            title: 'impart-pro-plugin',
            author: '@sumght',
            authorLink: 'https://gitee.com/sumght',
            link: 'https://gitee.com/sumght/impart-pro-plugin',
            isV3: true,
            isV2: false,
            description: 'Yunzai-Bot 的扩展插件 牛牛大作战先行测试，男人之间细说的互动玩法(原银趴插件)',
            // 显示图标，此为个性化配置
            // 图标可在 https://icon-sets.iconify.design 这里进行搜索
            icon: 'noto-v1:ox',
            // 图标颜色，例：#FF0000 或 rgb(255, 0, 0)
            iconColor: 'rgb(241,212,152)',
            // 如果想要显示成图片，也可以填写图标路径（绝对路径）
            // iconPath: path.join(_paths.pluginRoot, 'resources/images/icon.png'),
        },
        // 配置项信息
        configInfo: {
            // 配置项 schemas
            schemas: [
                {
                    component: 'Divider',
                    label: 'CD设置'
                },
                {
                    field: 'impart.ypcd',
                    label: '开导CD',
                    bottomHelpMessage: '开导cd冷却时间,单位秒',
                    component: 'InputNumber',
                    required: true,
                    componentProps: {
                        min: 10,
                        placeholder: '请输入开导CD,如10'
                    }
                },
                {
                    field: 'impart.jjcd',
                    label: '决斗CD',
                    bottomHelpMessage: '决斗cd冷却时间,单位秒',
                    component: 'InputNumber',
                    required: true,
                    componentProps: {
                        min: 10,
                        placeholder: '请输入决斗CD,如10'
                    }
                },
                {
                    field: 'impart.suonncd',
                    label: '嗦牛牛CD',
                    bottomHelpMessage: '嗦牛牛cd冷却时间,单位秒',
                    component: 'InputNumber',
                    required: true,
                    componentProps: {
                        min: 10,
                        placeholder: '请输入嗦牛牛CD,如10'
                    }
                },
                {
                    component: 'Divider',
                    label: '群聊名单设置'
                },
                {
                    field: 'impart.noImpart',
                    label: '黑名单群聊',
                    bottomHelpMessage: '银趴禁用群名单',
                    component: 'Select',
                    componentProps: {
                        allowAdd: true,
                        allowDel: true,
                        mode: 'multiple',
                        options: groupList
                    }
                },
                {
                    field: 'impart.yesImpart',
                    label: '白名单群聊',
                    bottomHelpMessage: '银趴启用群名单',
                    component: 'Select',
                    componentProps: {
                      allowAdd: true,
                      allowDel: true,
                      mode: 'multiple',
                      options: groupList
                    }
                }
            ],
            // 获取配置数据方法（用于前端填充显示数据）
            getConfigData() {
                return {
                    impart: Config.getDefOrConfig('impart-config')
                }
            },
            // 设置配置的方法（前端点确定后调用的方法）
            setConfigData(data, { Result }) {
                let config = Config.getCfg()
                for (const key in data) {
                    let split = key.split('.')
                    if (lodash.isEqual(config[split[1]], data[key])) continue
                    Config.modify(split[0] + '-config', split[1], data[key])
                }
                return Result.ok({}, '保存成功~')
            },
        },
    }
}